package com.atguigu.gmall.product.service;

import com.atguigu.gmall.model.product.*;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface ManageService {

    //1、查询1级分类
    List<BaseCategory1> getCategory1();

    //2、查询2级分类 By 1级ID
    List<BaseCategory2> getCategory2ByCategory1Id(Long category1Id);

    //3、查询3级分类 By 2级ID
    List<BaseCategory3> getCategory3ByCategory2Id(Long category2Id);

    //4、根据分类id获取平台属性
    List<BaseAttrInfo> attrInfoList(Long category1Id, Long category2Id, Long category3Id);

    //5、添加平台属性
    void saveAttrInfo(BaseAttrInfo baseAttrInfo);

    //6、查询SPU分页列表
    IPage<SpuInfo> spuPage(Integer page, Integer limit, Long category3Id);

    //7、去SPU添加页面 加载所有品牌
    List<BaseTrademark> getTrademarkList();

    //8、获取销售属性
    List<BaseSaleAttr> baseSaleAttrList();

    //9、保存SPU
    void saveSpuInfo(SpuInfo spuInfo);

    //10、查询SKU图片
    List<SpuImage> spuImageList(Long spuId);

    //11、根据spuId获取销售属性
    List<SpuSaleAttr> spuSaleAttrList(Long spuId);

    //12、保存SKU
    void saveSkuInfo(SkuInfo skuInfo);

    //13、获取sku分页列表
    IPage<SkuInfo> skuList(Integer page, Integer limit);

    //14、上架
    void onSale(Long skuId);

    //15、下架
    void cancelSale(Long skuId);

    //16、根据skuId查询skuInfo信息
    SkuInfo getSkuInfo(Long skuId);

    //17、根据三级分类ID查询一二三级分类
    BaseCategoryView getCategoryView(Long category3Id);

    //18、根据skuId查询库存表中的价格
    BigDecimal getSkuPrice(Long skuId);

    //19、根据spuId查询销售属性以及属性值 集合；根据skuId查询当前选中项
    List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(Long skuId, Long spuId);

    //20、根据spuId查询销售组合与SkuId之间的对应
    Map getSkuValueIdsMap(Long spuId);
}
